#ifndef __CORE__H__
#define __CORE__H__

// Standard 
#include <errno.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

// Glib 
#include <glib.h>

// GSList全局定义
typedef void(*GS_CLEAN);
typedef void(*GS_FREE);
typedef void(*GS_FOREACH_FREE);
typedef void(*GS_FREE_ALL_CLEAN);

#define GS_CLEAN(sl)            sl = NULL;
#define GS_FREE(sl)             g_slist_free(sl);
#define GS_FOREACH_FREE(sl)     g_slist_foreach(sl, (GFunc)g_free, NULL);
#define GS_FREE_ALL_CLEAN(sl)   GS_FOREACH_FREE(sl)                     \
                                GS_FREE(sl)                             \
                                GS_CLEAN(sl)

// StringUtils 全局定义
typedef void(*S_FREE);
typedef void(*S_CLEARN);
typedef void(*S_CLEARN_SIZE);

#define S_FREE(s)               free(s);
#define S_CLEARN(s)             memset(s,0,sizeof(s));
#define S_CLEARN_SIZE(s, size)  memset(s,0,size);

// Core


#endif  //!__CORE__H__